瞭解任務與資料的平行處理功能

因為多核心處理器,平行程式設計 parallel programing 是將來很重要的趨勢

Task / Data 任務與資料的平行處理

1.資料平行處理

通過資料分解,讓不同處理器做同一工作

@example : 大量資料處理(例:圖像中的許多像素),把資料分解,並交給多個處理器進行處理

這一直是超級電腦擅長的領域,且"資料平行處理"重視程度遠超過"任務平行處理"


2.任務平行處理

同一資料有多個任務需要進行 (對任務進行分解)

@example : 不同處理器針對 "同一資料集" 分別計算不同答案

很大的資料集想知道該資料集的最小值、最大值、平均值
  • 管線操作 :有多個任務需要完成 (不是讓每個任務對資料進行獨立操作)
Data => T1 => T2 => T3
  • 圖像處理器常使用 :
Data => 應用濾鏡 => 聚焦 => 白平衡

1967 Amdahl's Law

速度的提升受程式中 "串列部分" (程式中不能並行執行的部分)的限制
串列部分的執行時間不會縮短
固定工作量,看時間

--------
| 100s |    不能改變的串列
--------
--------
| 100s |    可以改變的串列
--------
--------
| 100s |    不能改變的串列
--------
total : 300s

=>

--------
| 100s |                不能改變的串列
--------
-------     -------
| 50s |  +  | 50s |     可以改變的串列
-------     -------
--------
| 100s |                不能改變的串列
--------    
total : 250s

由此觀點 : 多核心和平行處理終有極限,好像沒有想像中那麼厲害耶!

= = = = = 反駁 = = = = =

1988 Gustafson

換個角度看 :
電腦所做的工作每年都在變化,資料要處理的量也越來越多
如果固定時間,看工作量

執行時間 : 500s
-----------
| 100 bit |     不能改變的串列
-----------
-----------
| 100 bit |     可以改變的串列
-----------
-----------
| 100 bit |     不能改變的串列
-----------
total 工作量 : 300 bit

=>

執行時間 : 500s
-----------
| 100 bit |                     不能改變的串列
-----------
-----------     -----------
| 100 bit |  +  | 100 bit |     可以改變的串列
-----------     -----------
-----------
| 100 bit |                     不能改變的串列
-----------   
total 工作量 : 400 bit

不斷增加需要完成的工作量(這正是電腦發展中的實際狀況) ,串列部分對我們的影響將逐漸減弱

運行速度將隨著處理器數量的增加而迅速提升

這就是超級電腦能成功運用並行技術的關鍵

results matching ""

    No results matching ""